package Trab.ES1.Modelos;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 *
 * @author Grupo H
 */

public class Grupo
{
    private String nome;
    private String descricao;
    private List<Usuario> usuariosDoGrupo;
    private List<Usuario> administradoresDoGrupo;
    private List<Comentario> comentariosDoGrupo;
    private List<Receita> receitasDoGrupo;
    
    public Grupo(String nome, String descricao, Usuario dono)
    {
        this.nome = nome;
        this.descricao = descricao;
        this.usuariosDoGrupo = new ArrayList<>();
        this.administradoresDoGrupo = new ArrayList<>();
        this.receitasDoGrupo = new ArrayList<>();
        this.comentariosDoGrupo = new ArrayList<>();
        this.getUsuariosDoGrupo().add(dono);
        this.getAdministradoresDoGrupo().add(dono);
    }

    /**
     * @return the nome
     */
    public String getNome() 
    {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) 
    {
        this.nome = nome;
    }

    /**
     * @return the descricao
     */
    public String getDescricao() 
    {
        return descricao;
    }

    /**
     * @param descricao the descricao to set
     */
    public void setDescricao(String descricao) 
    {
        this.descricao = descricao;
    }

    /**
     * @return the usuariosDoGrupo
     */
    public List<Usuario> getUsuariosDoGrupo() 
    {
        return usuariosDoGrupo;
    }

    /**
     * @return the comentariosDoGrupo
     */
    public List<Comentario> getComentariosDoGrupo()
    {
        return comentariosDoGrupo;
    }

    /**
     * @return the receitasDoGrupo
     */
    public List<Receita> getReceitasDoGrupo() 
    {
        return receitasDoGrupo;
    }
    
    public List<Usuario> getAdministradoresDoGrupo()
    {
        return administradoresDoGrupo;
    }

    @Override
    public boolean equals(Object o)
    {
        Grupo grupoSendoComparado = (Grupo) o;
        return this.getNome().equalsIgnoreCase(grupoSendoComparado.getNome());
    }

    @Override
    public int hashCode() 
    {
        int hash = 3;
        hash = 23 * hash + Objects.hashCode(this.getNome());
        return hash;
    }
        
    public String getNomesUsuariosDoGrupo()
    {
        String resp = "";
        for(Usuario u: this.getUsuariosDoGrupo())
        {
            if(this.getAdministradoresDoGrupo().contains(u))
                resp += u.getNomePublico()+"- Administrador\n";
            else
                resp += u.getNomePublico()+"\n";
        }
        return resp;
    }
    
    public String getNomesReceitasDoGrupo()
    {
        String resp = "";
        for(Receita r: this.getReceitasDoGrupo())
            resp += r.getNome()+"\n";
        return resp;
    }
}
